iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
0

Day 20-Telegram 回聲機器人

現在我們已經了解JSON格式了!
馬上就來實作一個小功能吧!

function doPost(e){
  
  var estringa = JSON.parse(e.postData.contents);
 
  var payload = start(estringa);
  var data = {
    "method": "post",
    "payload": payload
  }
   
  UrlFetchApp.fetch("https://api.telegram.org/bot你機器人的token/", data);
}
function start(estringa){
  var id = "你的id"
  var payload;
   
  if (estringa.message.text){
      payload = {
          "method": "sendMessage",
          "chat_id": id,
          "text": estringa.message.text,
      } 
     
  }
  else if (estringa.message.sticker){
    payload = {
      "method": "sendSticker",
      "chat_id": id,
      "sticker": estringa.message.sticker.file_id
    }
   }
  else if (estringa.message.photo){
    array = estringa.message.photo;
    text = array[1];
    payload = {
      "method": "sendPhoto",
      "chat_id": id,
      "photo": text.file_id
    }
   }
    else {
    payload = {
      "method": "sendMessage",
      "chat_id": id,
      "text": "Try other stuff"
    }
   }
  return payload
}

第3行:將資料轉為JSON格式儲存。
第5行:把payload設為執行start(estringa)方法。
第6行:傳送訊息方法設為POST,內容為payload
第11行:fetch至Telegram Bot並傳送data
第14行:將我們的ID設為id儲存。
第17-47行:判斷接受的訊息內容為文字、貼圖或照片,來決定回傳的訊息。
第18行:返回程式碼上層,重複執行判斷。

程式碼完成後,一樣部屬,就可以到Telegram來測試機器人是否會傳送一樣的訊息回來。

https://ithelp.ithome.com.tw/upload/images/20200930/20130283dXcIWl2wmc.png

我在測試時有發現如果傳送的照片檔案太小(10幾KB),就不會有回聲效果。
這部分我不太清楚為什麼會這樣,如果有人知道歡迎告訴我原因或解決辦法~

以上就是一個簡單的回聲機器人製作,運用了簡單的if判斷式,就可以完成這樣的效果,還蠻有趣的!

之後幾篇會特別在針對特定訊息回覆這塊多做說明!

參考資料

https://reurl.cc/x0Lnr4


上一篇
Day 19-JSON格式
下一篇
Day 21-Telegram Bot:發送訊息
系列文
利用Google App Script 實作Telegram Bot30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
Charles Wang
iT邦新手 5 級 ‧ 2021-02-04 17:44:41

抱歉想問一下
因為一直無法讓機器人回應

var id = "你的id"

這邊是指輸入機器人ID? 還是使用者ID? 還是什麼ID?

以及使用者ID的話
我嘗試用您Day18 所取得的 發送者ID 去填入,還是無反應

有點卡關了 哈哈 再請幫忙解惑 感謝

toikusen iT邦新手 5 級 ‧ 2021-02-04 23:08:23 檢舉

這邊指的是使用者的ID喔!
會不會是SetWebhook設定有問題呢?
或是把數字當成字串處理了?
也許你可以看一下參考資料的步驟來操作看看。
下面這個網址講的也很詳細,我有些地方也是參考他的,你也可以試試。
Telegram bot 機器人製作教學

toikusen iT邦新手 5 級 ‧ 2021-02-05 13:11:38 檢舉

把var id = "你的id"
這邊的雙引號拿掉試試看
改成var id = 你的id

0
grace__71
iT邦新手 5 級 ‧ 2021-08-24 18:10:40

想請問一下執行後會出現這個錯誤該如何解決
TypeError: Cannot read property 'postData' of undefined
如果直接部屬telegram也沒有反應
謝謝~

toikusen iT邦新手 5 級 ‧ 2021-08-25 09:25:22 檢舉

您好,
會出現這樣子的問題代表在儲存資料時出了問題,
很可能是在前面SetWebhook時有錯誤。
你可以看一下我第18天的文章檢查一下設定有沒有錯,
然後試試看更新你部屬的url,
還有確認一下機器人的token是否正確。

grace__71 iT邦新手 5 級 ‧ 2021-08-25 17:20:18 檢舉

好的,謝謝
我再試看看~

我要留言

立即登入留言